package parts3.lesson36;

/**
 * 在代码块里使用synchronized进行对象加锁同步
 */
public class MyThread implements Runnable {
    private int ticket = 10;

    @Override
    public void run() {
        for (int x = 0; x < 20; x++) {
            synchronized (this) {
                if (this.ticket > 0) {
                    /**
                     * 在这里给this对象加锁
                     */
                    try {
                        /**
                         * 模拟网络延迟1秒，就可能出现同一张票多个人同时卖出了
                         * 也有可能多卖出了一张票，变成了0
                         */
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println(Thread.currentThread().getName() + "卖票，ticket=" + this.ticket);

                }
                this.ticket--;
            }
        }
    }
}
